
var queue: Array<any> = [] // 下载队列 避免重复下载

/**
 * 生成随机文件名后的路径
 * @param {string} url 网络地址
 * @param {string} dir 保存的路径
 * @returns {string} 随机文件名后的路径
 */
function filename(url: string, dir: string) {
    dir = dir.replace(/(^\/)|(\/$)/g, '')
    const name = Date.now() + uni.$u.guid(4) + '.jpg'
    return `_doc/${dir}/${name}`
}

/**
 * 下载文件
 * @param {string} url 要下载文件资源地址
 * @param {string} [dir] 下载文件保存的路径
 * @returns {Promise<string|null>} 下载后的本地路径
 */
function download(url: string, dir: string) {
    return new Promise(resolve => {
        if (queue.includes(url)) return
        queue.push(url)
        const task = plus.downloader.createDownload(url, dir ? { filename: filename(url, dir) } : {}, (download, status) => {
            queue.splice(queue.indexOf(url), 1)
            resolve(status === 200 ? download.filename : null)
        })
        task.start()
    })
}
export default download
